package com.group2.edu.realtime.dws.function;

import com.group2.edu.realtime.dws.util.KeywordUtil;
import org.apache.flink.table.annotation.DataTypeHint;
import org.apache.flink.table.annotation.FunctionHint;
import org.apache.flink.table.functions.TableFunction;
import org.apache.flink.types.Row;

import java.util.List;

/**
 * @author 高耀
 * @date 2024/12/16 10:14<p></p>
 *
 * 此类是自定义炸裂函数，实现传入一串字符，自动分词并返回多行
 */
@FunctionHint(output = @DataTypeHint("ROW<word STRING>"))
public class MyKeywordAnalyzeFunction extends TableFunction<Row> {
    /**
     * 必须定义名为eval的方法
     * @param fullWord 要被分词的内容
     */
    public void eval(String fullWord) {
        //TODO 1 调用KeywordUtil的方法进行分词，返回各词组成的List
        List<String> keywordList = KeywordUtil.splitWords(fullWord);
        //TODO 2 遍历List，依次封装成Row类型调用本类的collect方法写出
        for (String word : keywordList) {
            collect(Row.of(word));
        }
    }
}
